# PathOpt 1.0

# Optimisation du path de Windows avec suppression des sous chemins inutiles
# Les différents sous chemins du Path windows sont affiches avec une case
# à cocher précochée si le sous chemin existe
# il est possiche de cocher ou décocher des cases
#
# la sauvegarde du path n'est valabe que pour la session en cours, à terme
# il sera sauvegardé dans le registre et la modification sera permanente
# Pour lancer le traitement cliquer sur le Bouton Traiter
Pour quitter le programme cliquer sur Quitter

# On crée une fenêtre simple 

#
import os
path=os.getenv("PATH")
pathtab=path.split(sep=";")
long=max(len(pathtab[i]) for i in range(len(pathtab)))

# On importe Tkinter
from tkinter import *
from tkinter import messagebox
import time


# On crée une fenêtre, racine de notre interface

fp = Tk()
fp.wm_title("PathOpt")

def About(): messagebox.showinfo("A propos","PathOpt\nVersion 1.0\nFactor23")
def Traiter():
    pathtab_r=[]
    for i in range(0,len(pathtab)):
        if liste_var_case[i].get():
            pathtab_r.append(pathtab[i])
    newpath=";".join(pathtab_r)
    fichpathex = "pathex"+str(int(time.time()))+".txt"
    pathex=open(fichpathex,mode="w")
    pathex.write(path)
    pathex.close()
    os.environ["path"]=newpath
    messagebox.showinfo("path","Compression du path faite\n\n"+os.getenv("PATH"))
    fp.destroy()
    

mainmenu = Menu(fp)  ## Barre de menu

menuFichier = Menu(mainmenu,tearoff = 0)
mainmenu.add_cascade(label = "Fichier", menu=menuFichier)
menuFichier.add_command(label="Quitter", command=fp.quit)

menuInfo = Menu(mainmenu,tearoff = 0)
mainmenu.add_cascade(label = "Info", menu=menuInfo)
menuInfo.add_command(label="A propos", command=About) 

fp.config(menu = mainmenu)



liste_var_case = []
case=[]
Label(fp, text="Traitement du path",font = "Helvetica 16 bold").grid(column=1)

#Creation des cases à cocher
for element in pathtab:
    var_case=BooleanVar()
    var_case.set(os.path.isdir(element))
    liste_var_case.append(var_case)
    case.append(Checkbutton(fp,text=element,variable=var_case).grid(column=1, sticky=W))
    
# Création d'un widget Button (bouton Lancer)
BoutonLancer = Button(fp, text ='Traiter',command = Traiter)

# Positionnement du widget avec la méthode pack()
BoutonLancer.grid(row=20,sticky=S,padx=50, pady=10)

# Création d'un widget Button (bouton Quitter)
BoutonQuitter = Button(fp, text ='Quitter', command = fp.destroy)
BoutonQuitter.grid(row=20,column=2,sticky=W,padx=50, pady=10)

# On démarre la boucle Tkinter qui s'interompt quand on ferme la fenêtre
fp.mainloop()





